package io;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * 使用文件输入流从文件中读取数据
 *  java.io.OutputStream是FileOutputStream的超类,FileOutputStream继承自java.io.OutputStream
 */

public class FisDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("fos.dat");

        /*
          fos.dat文件的数据:
          0000-0001 0000-0010 文件末尾

          第1次读: 读取文件中的   0000-0001 0000-0010 文件末尾
                               ^^^^ ^^^^
          返回的d的二进制数据:
          0000-0000 0000-0000 0000-0000 0000-0001------------(1)
         */
        int d = fis.read();//read()一次只能读取一个字节的数据, 也就是八位二进制
        System.out.println(d);//1

        /*
          fos.dat文件的数据:
          0000-0001 0000-0010 文件末尾

          第2次读: 读取文件中的   0000-0001 0000-0010 文件末尾
                                         ^^^^ ^^^^
          返回的d的二进制数据:
          0000-0000 0000-0000 0000-0000 0000-0010------------(2)
         */
        d = fis.read();//read()一次只能读取一个字节的数据, 也就是八位二进制
        System.out.println(d);//2

        /*
          fos.dat文件的数据:
          0000-0001 0000-0010 文件末尾

          第3次读: 读取文件中的   0000-0001 0000-0010 文件末尾
                                                  ^^^^^^^^
                                                  文件末尾全是1
          返回的d的二进制数据:
          1111-1111 1111-1111 1111-1111 1111-1111------------(-1)
          32位2进制全是1, 即为整数-1, 用于表示流丢去到了末尾
         */
        d = fis.read();//read()一次只能读取一个字节的数据, 也就是八位二进制
        System.out.println(d);//-1, 文件末尾是-1
        fis.close();//流使用后关闭

    }
}
